package com.ruifu.proj.vo.ptmain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruifu.proj.vo.pmPtObject.PmPtObjectResultVO;
import com.ruifu.proj.vo.pmptype.PmPTypeVO;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 任务属性VO
 */
@Data
public class PmPtMainAttributeVO {

    private Long ptId;  //项目任务ID，整型
    private Long ptPId; //任务的父任务ID

    private String ptPtm; //对象类别，P表示项目；T表示任务；M表示模板
    private String ptPtmStr; //对象类别解释

    private String ptCode;  //项目或任务的编号;父任务code_本任务ID;
    private String parentPtPtCode; //父code

    private Long ptSafeLevel; //保密级别，4，绝密；3，机密；2，保密；1，一般；
    private String ptSafeLevelStr; //保密级别解释，4，绝密；3，机密；2，保密；1，一般；

    private String ptSpecial; //紧急程度，枚举值，‘M’重要；‘N’一般；
    private String ptSpecialStr; //紧急程度解释，枚举值，‘M’重要；‘N’一般；

    private String ptName;  //项目或任务的名称
    private Long ptTypeId;  //外键，PM_ptype表ID引用

    private Long ptExecuter;  //项目任务执行人ID

    private String ptAssignors;//委托人链(截取委托链条最后一个人进行展示)
    private Long ptAssignorId;//委托人
    private String identity;//身份 (A 委托人，执行人)
    private Long ptCreator; //创建人

    /**
     * 工期
     */
    private BigDecimal ptDays;

    /**
     * 预估费用
     */
    private BigDecimal ptCost;


    /**
     * 预估费用单位：1-人民币元 2-美元 3-欧元
     */
    private String ptCostunit;



    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date ptPlanStart; //项目、任务计划开始时间
    /**
     * 项目、任务计划结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date ptPlanEnd;

    private String ptStatus;  //任务状态：A待下达，B待启动，C待提交，D待确认，E已关闭
    private String ptStatusStr;  //任务状态解释

    private String ptRemark;  //项目任务的备注说明信息字段
    private Integer ptProgress;//项目进度

    private String ptPropsets;  //项目任务属性集字段
    private String ptOrder;//排序字段  wbs

    private String phaseName;//项目阶段名称

    private Integer permission;

    private PmPTypeVO pmPType;//类型对象




    public String getPtSpecialStr() {
        //‘M’重要；‘N’一般；
        if ("M".equals(ptSpecial)) {
            ptSpecialStr = "重要";
        } else if ("N".equals(ptSpecial)) {
            ptSpecialStr = "一般";
        }
        return ptSpecialStr;
    }

    public Long getPtSafeLevelStr() {
        //数值枚举类型，4，绝密；3，机密；2，保密；1，一般；
        if (1L == ptSafeLevel) {
            ptSafeLevelStr = "一般";
        } else if (2L == ptSafeLevel) {
            ptSafeLevelStr = "保密";
        } else if (3L == ptSafeLevel) {
            ptSafeLevelStr = "机密";
        } else if (4L == ptSafeLevel) {
            ptSafeLevelStr = "绝密";
        }

        return ptSafeLevel;
    }

    //点击下达发送状态码B
    //点击启动发送状态码C
    //点击提交发送状态码D
    //点击审核通过发送状态码E
    //点击审核驳回发送状态码C
    public String getPtStatusStr() {
        //A待下达，B待启动，C待提交，D待确认，E已关闭
        if ("A".equals(ptStatus)) {
            ptStatusStr = "未下达";
        } else if ("B".equals(ptStatus)) {
            ptStatusStr = "已下达";
        } else if ("C".equals(ptStatus)) {
            ptStatusStr = "执行中";
        } else if ("D".equals(ptStatus)) {
            ptStatusStr = "待验收";
        } else if ("E".equals(ptStatus)) {
            ptStatusStr = "已关闭";
        } else if ("F".equals(ptStatus)) {
            ptStatusStr = "已中止";
        } else if ("AP".equals(ptStatus)) {
            ptStatusStr = "已暂停";
        } else if ("BP".equals(ptStatus)) {
            ptStatusStr = "已暂停";
        } else if ("CP".equals(ptStatus)) {
            ptStatusStr = "已暂停";
        } else if ("DP".equals(ptStatus)) {
            ptStatusStr = "已暂停";
        }
        return ptStatusStr;
    }

    public String getPtPtmStr() {
        //对象类别，P表示项目；T表示任务；M表示模板

        if ("P".equals(ptStatus)) {
            ptStatusStr = "项目";
        } else if ("T".equals(ptStatus)) {
            ptStatusStr = "任务";
        } else if ("M".equals(ptStatus)) {
            ptStatusStr = "模板";
        }
        return ptPtmStr;
    }
}
